package src;

import java.util.Calendar;

public class Ordre {
	private Joueur J;
	private double prix;
	private int quantite;
	private String type;
	private Calendar temps;
	
	public Joueur getJ() {
		return J;
	}

	public void setJ(Joueur j) {
		J = j;
	}

	public double getPrix() {
		return prix;
	}

	public void setPrix(double prix) {
		this.prix = prix;
	}

	public int getQuantite() {
		return quantite;
	}

	public void setQuantite(int quantite) {
		this.quantite = quantite;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public Calendar getTemps() {
		return temps;
	}

	public void setTemps(Calendar temps) {
		this.temps = temps;
	}

	public Ordre(Joueur J, String type, double prix, int quantite, Calendar temps){
		this.J = J;
		this.prix = prix;
		this.quantite = quantite;
		this.temps = temps;
		this.type= type;
	}
	
	public Ordre clone()
	{
		return new Ordre(J,type,prix,quantite,temps);
	}
	
	public boolean PlusTot(Calendar o){
		return this.temps.before(o);
	}

	public boolean PlusTard(Calendar o){
		return this.temps.after(o);
	}
	
	// Rien à faire là, et redondant. Trouver un truc.
	public String printTemps(Calendar temps){
		return temps.get(Calendar.DAY_OF_MONTH) + "/" + temps.get(Calendar.MONTH) + "/" + temps.get(Calendar.YEAR) + " à " + temps.get(Calendar.HOUR) + "h" + temps.get(Calendar.MINUTE);
	}
	
	@Override
	public String toString() {
		return J.getNom() + " : " + type + " de " + quantite + " actions à " + prix + " le " + printTemps(temps) + ".";
	}
	
	public void execution(){
		if(type=="ACHAT")
		{
			J.setNbreActions(J.getNbreActions() + quantite);
			J.setArgent(J.getArgent() - quantite*prix);
			//Attention! On ne retire l'argent que lorsque l'ordre est exécuté. Peu réaliste,
			//demander ce qui se passe en réalité.
		} else if(type=="VENTE")
		{
			J.setNbreActions(J.getNbreActions() - quantite);
			J.setArgent(J.getArgent() + quantite*prix);
			//Différencier les types reste utile pour des raisons de clarté.
		}

	}

}
